package com.example.sys.org.init;

import com.example.core.init.AbstractSysInitService;
import com.example.sys.module.po.SysModule;
import com.example.sys.module.service.SysModuleService;
import com.example.sys.org.constant.OrgConstant;
import com.example.sys.org.po.SysRole;
import com.example.sys.org.service.SysRoleService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
public class SysInitRoleServiceImpl extends AbstractSysInitService {

    @Resource
    private SysModuleService sysModuleService;

    @Resource
    private SysRoleService sysRoleService;

    @Override
    public void init() throws Exception {

    }

    @Override
    public void start() throws Exception {
        for (SysModule sysModule : sysModuleService.list()) {
            //模块默认权限
            if (sysRoleService.existRole(sysModule.getBaseRole() + OrgConstant.DEFAULT_ROLE)) {
                SysRole sysRole = new SysRole();
                sysRole.setName(sysModule.getName() + "默认角色");
                sysRole.setCode(sysModule.getBaseRole() + OrgConstant.DEFAULT_ROLE);
                sysRole.setContext("拥有该默认角色，便可以显示菜单");
                sysRoleService.add(sysRole);
            }

            //模块新增权限
            if (sysRoleService.existRole(sysModule.getBaseRole() + OrgConstant.ADD_ROLE)) {
                SysRole sysRole = new SysRole();
                sysRole.setName(sysModule.getName() + "新增角色");
                sysRole.setCode(sysModule.getBaseRole() + OrgConstant.ADD_ROLE);
                sysRole.setContext("拥有该新增角色，便可以新增");
                sysRoleService.add(sysRole);
            }

            //模块删除权限
            if (sysRoleService.existRole(sysModule.getBaseRole() + OrgConstant.DELETE_ROLE)) {
                SysRole sysRole = new SysRole();
                sysRole.setName(sysModule.getName() + "删除角色");
                sysRole.setCode(sysModule.getBaseRole() + OrgConstant.DELETE_ROLE);
                sysRole.setContext("拥有该删除角色，便可以删除");
                sysRoleService.add(sysRole);
            }

            //模块编辑权限
            if (sysRoleService.existRole(sysModule.getBaseRole() + OrgConstant.EDIT_ROLE)) {
                SysRole sysRole = new SysRole();
                sysRole.setName(sysModule.getName() + "编辑角色");
                sysRole.setCode(sysModule.getBaseRole() + OrgConstant.EDIT_ROLE);
                sysRole.setContext("拥有该编辑角色，便可以编辑");
                sysRoleService.add(sysRole);
            }

            //模块查看权限
            if (sysRoleService.existRole(sysModule.getBaseRole() + OrgConstant.VIEW_ROLE)) {
                SysRole sysRole = new SysRole();
                sysRole.setName(sysModule.getName() + "查看角色");
                sysRole.setCode(sysModule.getBaseRole() + OrgConstant.VIEW_ROLE);
                sysRole.setContext("拥有该查看角色，便可以查看");
                sysRoleService.add(sysRole);
            }
        }
    }

    @Override
    public void destroy() throws Exception {

    }
}
